Application的概念
Application是一组业务逻辑相关的StreamJob的集合。合理地使用Application划分StreamJob可以很好的实现用户之间的资源共享和隔离。
如基于流的SQL引擎:Slipstream(基础介绍)所介绍的,Slipstream有三个核心的概念:Stream、StreamJob 和 Application。Stream是数据流,StreamJob是对一个或多个Stream进行计算并将结果写进一张表的任务,Application是一个或多个StreamJob的集合,用于实现资源的共享和隔离。本文将基于Slipstream的使用基础,针对 Slipstream的Application的隔离能力展开介绍。
Application的概念
Application是一组业务逻辑相关的StreamJob的集合。合理地使用Application划分StreamJob可以很好的实现用户之间的资源共享和隔离。
资源共享
Application内使用同一个Input Stream的StreamJob将共享一组Receiver,Receiver用于源源不断的从外部数据源获取数据。例如上图,Application 1中的StreamJob 2和StreamJob 3都以Input Stream 2为数据源,它们共享Application 1中为Input Stream 2启动的Receiver。
资源隔离
不同Application中的StreamJob若使用同一个Input Stream,每个Application会为这些Input Stream分别启动各自的Receiver。例如上图,Application 1和Application 2中的StreamJob都访问了Input Stream 2,所以Application 1和Application 2将分别为Input Stream 2启动一组Receiver。
Application相关语法
Application在静态时只是一个逻辑概念,主要用于帮助实现运行时的隔离和权限验证。用户可以对Application进行参数配置,且作用范围仅限于此逻辑单元。用户利用用户名登录Shell(比如Beeline),在自己创建的Application下通过SQL编写业务逻辑,并且可以对Application设置对应的权限(查看/修改/执行),从而通过Application方便地对业务进行查看管理。
关于Application的DDL
创建一个Application
CREATE APPLICATION <app_name> WITH APPPROPERTIES(["key"="value"][,"key"="value"...]); |
创建一个新的Application,可以用上述语法在APPPROPERTIES中指定任何需要对Application设置的参数。
描述一个Application
DESCRIBE [|DESC] APPLICATION <app_name>; |
描述指定Application的信息。
显示当前的Application
SHOW CURRENT APPLICATION; |
显示当前用户所在的Application。
修改一个Application
ALTER APPLICATION <app_name> SET APPPROPERTIES("key"="value"); |
通过SET APPPROPERTIES修改Application配置信息。
显示所有Application
SHOW APPLICATIONS; |
显示所有的Applications。
删除一个Application
DROP APPLICATION <app_name>; |
删除指定的Application。
Application级别管理
用户运行任何StreamJob之前需要进入对应的Application。默认情况下,当前的Application为default。
进入Application
USE APPLICATION <app_name>; |
显示正在运行的Application
LIST APPLICATIONS; |
关于Application隔离的应用实战
用户Emily作为一名新手刚刚开始接触Transwarp Slipstream,老板希望Emily做一些试验性的任务。由于集群上已有应用投入生产,为了不随意影响当前正在运行的应用,Emily决定利用StreamSQL支持的Application实现资源隔离,保证现有任务不受新建Application的影响。
连接至Inceptor后,Emily通过如下语句查看当前所有正在运行StreamJob的Application:
发现当前一个名为production的Application有StreamJob正在运行。接着,她查询了当前所在的Application:
目前正处于一个名为default的Application里。
为了不影响正在production中运行的为生产所用的StreamJob,Emily向管理员申请创建新的Application。
为了允许Emily新建Application,管理员用hive用户登陆Inceptor,切换到ADMIN角色:
为用户Emily创建CREATE Application的权限:
现在Emily就可以开始创建自己的Application并使用它了:
首先Emily在testapp中新建了一个流和一张表:
然后启动StreamJob:
接着查看该StreamJob是否启动成功:
输出如下,发现该StreamJob确实存在于结果列表中,证明创建成功:
现在Emily再次查看有StreamJob正在运行的Application:
如果切换到default application然后查看正在运行的StreamJob:
Emily会发现,并不能获得production中启动的StreamJob。此时,如果使用production的用户查看production中正在运行的StreamJob,同样也不会看到Emily刚刚在testapp中启动的StreamJob。
最后,完成任务后,Emily停止testapp中所有的StreamJobs:先切换回testapp,然后停止其中的StreamJobs。
结语
Slipstream支持并引入Application的概念,就是为了在流处理平台上实现面向用户的资源隔离。Application之间彼此独立,使不同Application中的StreamJob即使访问了同一个Input Stream,也对对方一无所知,从而构造出一种独立的环境。Application隔离方便了对于StreamJob的资源管理和分配,同时了加强了对信息的安全保障。各个应用平行运作,互不影响,有效的提升了开发效率。
关于流式计算的干货合集
1.扫盲版:白话大数据 | 流处理技术Streaming是什么?
2.基础版:基于流的SQL引擎:Slipstream(基础介绍)
3.进阶版:聚星*引航|“Slipstream:实时的复杂流处理引擎”演讲速记(附PPT)
4.参考版:Early adopters of streaming data technologies
5.高级版:视野 | 一款优秀的流处理产品必备的5大功能
回复关键字,获取更多资讯
简介 | 产品 | 技术 | 案例集 | 培训 | 白话大数据
评测 | 投资 | 新手上路 | Holodesk | TED视频
技术支持| 金融 | 电力 | 视频监控 | 运营商 |交通
税务 | 电商 | 智能金融 | 医疗 | 快递|TDH5.0|流式计算